package control.generarUnidad;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

import edificios.Edificio;
import excepcionesEdificios.ExcepNoEsGenerador;
import excepcionesJugador.ExcepSinFondos;

import juego.Juego;
import jugadores.Jugador;

import vista.VistaGenerarUnidad;

/**
 * @author Grupo 2, Algoritmos y programacion 3, Catedra Fontela<br>1er cuat 2007    
 * <br>Esta clase se encarga de controlar el boton generar, de la vista generadora de unidades.
 */

public class botonGenerarListener implements ActionListener {
	
	private VistaGenerarUnidad vista; //Referencia a la vista de generacion de unidades
	private Edificio edificio; //Edificio generador
	private Jugador jugadorActual; // Contiene la referencia al jugador actual
	
	/**
	 * Inicializa el controlador
	 * @param vista VistaGenerarUnidad a controlar
	 */
	public botonGenerarListener(VistaGenerarUnidad vista){
		this.vista = vista;
	}
	
	/**
	 * Define que realizar, cuando se acciona el boton
	 */
	public void actionPerformed(ActionEvent arg0) {
		this.jugadorActual = Juego.getInstance().getRonda().getTurnoActual().getJugador();
		//Obtengo el edificio generador
		try{
			edificio = (Edificio)vista.getPrimeroLista1();
			//Genero la unidad
			jugadorActual.generarUnidad(edificio);
		} catch (NullPointerException e){
			JOptionPane.showMessageDialog(vista, "Error en la compra");
		}
		catch (ClassCastException e2){
			JOptionPane.showMessageDialog(vista, "Error en la compra");
		}
		catch (ExcepSinFondos e3){
			JOptionPane.showMessageDialog(vista, "Sin fondos suficientes");
		}
		catch (ExcepNoEsGenerador e4){
			JOptionPane.showMessageDialog(vista, "El edificio no genera unidades");
		}
	}
}
